導航:首頁 > 操作系統 > 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獲取父進程相關的資料

熱點內容
如何查看電腦系統伺服器ip地址查詢 瀏覽:389
把文件夾設鎖 瀏覽:570
命令行語句 瀏覽:218
企友3e財務如何連接伺服器 瀏覽:984
華為手機如何刪除卸載app殘留數據 瀏覽:543
rpm的命令作用 瀏覽:365
如何查看網站的伺服器時間 瀏覽:850
編譯局和人民出版社 瀏覽:652
java泛型extends 瀏覽:326
頭條程序員教學 瀏覽:772
安卓合並什麼意思 瀏覽:530
linux在光碟引導 瀏覽:537
imap伺服器地址怎麼查 瀏覽:654
作曲教程pdf 瀏覽:506
pr怎麼壓縮文件大小 瀏覽:863
查看oracle字元集命令 瀏覽:179
鋰電池增加密度 瀏覽:661
linux用戶密碼忘記 瀏覽:242
gb壓縮天然氣 瀏覽:635
圖片拼接不壓縮app 瀏覽:670