A. Linux C函數Kill
你是程序中調用kill函數,還是在命令行調用kill命令?
int kill(pid_t pid, int sig); 函數有兩個參數,一個是進程號,一個是信號
如果你輸入的進程號是正確的,而進程還在,則信號有可能被該進程忽略了,不知道你發送的信號是幾號? 只有SIGKILL SIGSTOP不能被忽略,其它都可以忽略或捕捉。
B. 程序的終止代碼有哪些
結束當前函數用return
如果你想結束當前程序的代碼,只要在主函數里return就可以了
還有一個辦法就是exit(0),這個是系統函數。
更多追問追答
追問
能具體說一下怎麼用嗎,之前用過,運行之後程序沒有關閉。
追答
/*總結一下,結束自己的方法:1、在main里return2、調用void exit(int status)函數3、安裝信號,來結束自己//這個新人還是不用的好,其實也不能,只要你安裝一個信號,然後拋出信號就可以了。4、調用系統函數system()來kill自己的進程。*/ /*下面是我寫的類子,main函數里最後是"Not end",如果沒有跑出這個文言,說明函數中間終端了。我只寫了return和status,信號,這個你可以自己看一下這方面的資料。*/ #include <iostream>#include <stdlib.h> #define true 1 using namespace std; int main (int argc, char** argv) { cout << "Sleep 1s ..." << endl; sleep(1); cout << "Exit(0) work ..." << endl; // return true; exit(0); //void exit(int status);這個是exit的函數,返回狀態,int類型,該函數可以/*If one of these functions does not return (e.g., it calls _exit(2), or kills itself with a signal)*///這個為我摘要的該函數說明,大體意思就是說如果他沒有return,那麼就使用信號來kill自己。 cout << "Not end!" << endl;}
C. linux c語言編程 喚醒指定PID的進程
給你一個完整的測試代碼:
--------------------------
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
void handler(int signo)
{
printf("recv the signal from parent process\n");
}
int main()
{
pid_t pid;
pid = fork();
switch(pid)
{
case -1:
perror("fork failed");
exit(1);
case 0:
printf("in the child\n");
signal(SIGCONT, handler);
pause();
printf("child weakup\n");
break;
default:
printf("in the parent\n");
sleep(5);
kill(pid, SIGCONT);
sleep(5);
printf("parent weakup\n");
break;
}
printf("bye..\n");
exit(0);
}
--------------------------------------------------
運行及輸出:
beyes@linux-beyes:~/C> ./weakup.exe
in the child
in the parent
recv the signal from parent process
child weakup
bye..
parent weakup
bye..
....................................
D. linux下用c語言結束進程問題
ps 看一下名字對應的PID號。你也可以先了解一下ps命令的輸出格式。
使用killall+進程名似乎也是可以的。
E. 怎麼用c語言結束某進程
首先你要知道該進程的PID
如果在windows下可以用tskill PID命令來實現,如果是c語言,只需要用system函數就可以實現
#include"stdio.h"
#include"stdlib.h"
intmain()
{
system("tskillXXXX");
return0;
}
其中XXXX就是你需要傳入的進程的PID
如果是linux或者unix的系統
則用kill命令:
#include"stdio.h"
#include"stdlib.h"
intmain()
{
system("killXXXX");
return0;
}
XXX一樣是進程的PID
F. c語言父進程怎麼知道子進程是否還活著
fork的時候不是可以得到子進程的pid嗎,以後每隔5分鍾,就使用kill函數來查看該子進程是否活著,具體的用法如下:
fork();
......
//判斷是否活著
//如果子進程pid是***的話,則kill用法如下:
int ret=kill(***,0);
if(ret == 0 )
{ 子進程活著 }
else
{ 子進程死了}
G. linux c語言中在某個線程中怎樣終止整個程序
線程
可以用pthread_kill函數
傳遞信號SIGSTOP掛起
傳遞SIGCONT 恢復
進程
調用系統的stop掛起
或者用kill -stop 掛起
類似的 用SIGCONT 恢復。