❶ linux 查看哪些進程的父進程進程號是1 這個命令怎麼寫
init進程的pid是1
init進程是其他所有進程的父進程。
列出父進程號是1的進程,就是列出除了init外的所有進程。
❷ linux中如何更改程序的父進程
當父進程比子進程先結束時,linux內核會為子進程完成「尋父」過程,一般是把init(pid=1)進程當作子進程的父進程(就是設置子進程的ppid為1),最後子進程結束時,init進程負責wait子進程(釋放子進程的task_struct結構體),手動更改好像不行的吧。
❸ 使用linux編寫C語言程序,如何才能得到進程信息和父進程信息
我覺得這個問題你應該從另外一個方向去考慮,既然b不需要a的資源,那麼就不要在fork之前打開這些資源。
你如,你原來的代碼是
fd
=
open(...);
...
...
fork();
...
...
你現在就應該改成
fork();
if
(parent)
{
......
fd
=
open();
.....
}
else
{
....
}
如果你是要在a進程打開資源,運行了一些東西,得到了足夠的信息才需要調用其他啊程序來做下一步內容,如果按照上面的方法就無法實現了話,你面對的實際是進程間同步和通信的問題。
解決方法也很簡單,隨便通過一種通信機制(signal,pipe,等等),等a進程獲得足夠信息後,再通知b進程執行。比如
a:
fork();
/*
below
code
are
running
in
parent,
a
*/
...
...
fd
=
open();
...
...
notify(b);
/*
use
kill,
send,
etc.
to
notify
child
task
b)
....
b:
wait();
/*
for
example,
while(1)
sleep();
*/
execlp(xxx);
❹ Linux中如何在子進程獲取父進程的pid
getppid() 獲取父進程 id,
getpid() 獲取當前進程 id.
比如
int main()
{
int pid = fork();
if (pid == 0)
{
// child
printf ("ParentID is %d\n", getppid());
}
esle
{
printf("I'm parent, id %d\n", getpid());
wait(NULL);
}
return 0;
}
再就是程序編譯沒錯,但是運行時出現「實時信號 2」
沒有源碼,誰也幫不上你。 你可以用 gdb去調試。
❺ linux 下,已知子進程的情況下,列印(顯示)父進程
在Linux下,可以有兩種比較方便的方法:
1. # pstree
通過系統的進程樹來查看某個進程的父進程;
2. # ps -ef |grep <進程名>
在顯示的輸出中,第三列就是該進程的父進程PID,然後可以再使用ps命令來查看父進程的名稱
# ps -ef |grep <父進程PID>
這應該就是你想要的結果吧?
❻ 2018-06-21 linux查看父進程id
環境 docker alpine
ps -efo "comm,pid,ppid,pgid,args"
args必須放在其他參數之後
linux中有時父進程結束後,子進程,以及子進程的子進程是無法結束的。
node -e "require('terminate')(2579)"
terminate是nodejs的一個模塊
pm2 start /usr/local/lib/node_moles/visop/bin/visop-start -i 1 -n visopadmin -- -f
--後面跟的是腳本的參數
netstat -anp|grep 8050
netstat -anp|grep 8050|awk '{print $NF}'|grep -o [0-9]*
NF為awk中每一行的列數
❼ 使用linux編寫C語言程序,如何才能得到進程信息和父進程信息
getpid()得到當前進程的pid, getppid()是得到父進程的pid
寫成語句就是
printf ( "My process ID is%d\n", getpid());
printf ( "My parent's process ID is%d\n", getppid());
記得要添加頭文件 #include <stdio.h>
❽ 如何查看linux後台運行程序的父進程
ps -ef | grep PID
看輸出結果,第三列就是父進程PPID