導航:首頁 > 操作系統 > linux獲取父進程

linux獲取父進程

發布時間:2023-04-03 15:25:45

linux 下,已知子進程的情況下,列印(顯示)父進程

在Linux下,可以有兩種比較方便的方法:
1. # pstree
通過系統的進程樹來查看某個進程的父進程;
2. # ps -ef |grep <進程名>
在顯示的輸出中,第三列就是該進程的父進程PID,然後可以再使用ps命令來查看父進程的名稱
# ps -ef |grep <父進程PID>
這應該就是你想要的結果吧?

❷ linux終端下使用pipe實現父子進程交互

看這個問題好久都沒人回答。。。

挺簡單的,fork一子一父進程,父進程循環讀入文件內容,並寫進道管道裡面,子進程循環從管道接收然後列印出來。

擼碼辛苦,望採納。

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<string.h>
#include<fcntl.h>
intmain()
{
pid_tresult;
intn,num;
intpipe_fd[2];
intfd;
charbuf1[100],buf2[100];
memset(buf1,0,sizeof(buf1));
memset(buf2,0,sizeof(buf2));
fd=open("/home/w.c",O_RDONLY);
if(pipe(pipe_fd)<0)
{
printf("error! ");
return-1;
}
result=fork();
if(result<0)
{
printf("error! ");
exit(0);
}
elseif(result==0)
{
close(pipe_fd[1]);
while((n=read(pipe_fd[0],buf1,99))>0)
{
buf1[n]='';
printf("%s",buf1);
memset(buf1,0,sizeof(buf1));
}
}
else
{
close(pipe_fd[0]);
while((num=read(fd,buf2,99))>0){
write(pipe_fd[1],buf2,strlen(buf2));
}
waitpid(result,NULL,0);
}
close(pipe_fd[1]);
close(pipe_fd[0]);
close(fd);

return0;
}

❸ 如何查看linux後台運行程序的父進程

ps -ef | grep PID
看輸出結果,第三列就是父進程PPID

❹ linux 查看哪些進程的父進程進程號是1 這個命令怎麼寫

init進程的pid是1
init進程是其他所有進程的父進程。
列出父進程號是1的進程,就是列出除了init外的所有進程。

❺ 使用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編寫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中如何更改程序的父進程

當父進程比子進程先結束時,linux內核會為子進程完成「尋父」過程,一般是把init(pid=1)進程當作子進程的父進程(就是設置子進程的ppid為1),最後子進程結束時,init進程負責wait子進程(釋放子進程的task_struct結構體),手動更改好像不行的吧。

閱讀全文

與linux獲取父進程相關的資料

熱點內容
七月程序員面試 瀏覽:894
蘋果app簽名過期怎麼續期 瀏覽:531
c編譯器的配置 瀏覽:776
地鐵逃生卡加密箱容量 瀏覽:421
jpegimage編譯不通過 瀏覽:222
怎麼加密板塊 瀏覽:450
知道ftp如何直接登錄伺服器 瀏覽:972
一加8手機怎麼應用加密 瀏覽:676
u盤加密電視能讀電腦不能讀 瀏覽:350
透明袋子加密封條圖片 瀏覽:599
下載安卓軟體叫什麼名字 瀏覽:250
伺服器如何切割多位元組 瀏覽:321
linux圖形界面使用 瀏覽:989
javaset重復 瀏覽:190
splunk命令 瀏覽:42
cad怎麼取消右鍵重復上次命令 瀏覽:402
vc2010版本編譯在哪裡 瀏覽:821
驍尤安卓手機如何下應用 瀏覽:249
java語言平台 瀏覽:863
京東雲伺服器怎麼換ip 瀏覽:609