1.Linux下C语言 编写程序创建3个进程,三个进程分别完成不同的事情
两次建立子进程就行了啊 ~~
父子孙:
pid_t pid;
pid = fork();
//进程地址空间独立
if(pid < 0) {
}
if(pid == 0) {
pid = fork();
if(pid < 0) {
}
if(pid == 0) {
printf("789");//孙
}
if(pid > 0){
printf("456");//子
}
}
if(pid > 0){
printf("123");//父
}
发散思维即可
2.写一个linux下写个关于c语言的双守护进程,就是监视一个进程,当其
可以分三步来做: 做两个简单的守护进程,并能正常运行监控进程是否在运行启动进程综合起来就可以了,代码如下:被监控进程thisisatest.c(来自):#include
3.linux下c语言pipe无名管道 main函数创建两个进程p1和p2,p1把一个文
#include <stdio.h>
main()
{
int i,r,p1,p2,fd[2];
char buf[50],s[50];
pipe(fd); //创建匿名管道,fd[0]为读端,fd[1]为写端
while((p1=fork())==-1); //创建子进程P1,直至成功为止(p1!=-1)
if(p1==0) //子进程P1执行逻辑
{
lockf(fd[1],1,0); //锁定管道写端,保证写入数据的完整性
sprintf(buf,"child process P1 is sending messages!\n"); //在buf中填入准备写入管道的信息数据
printf("child processP1!\n"); //打印“子进程P1正在运行”
write(fd[1],buf,50); //向管道写端fd[1]写入buf中的数据,写完后该数据即可以从读端fd[0]读出
sleep(5); //睡眠5秒
lockf(fd[1],0,0); //解锁管道写端
exit(0); //子进程P1退出
}
else //主进程的执行逻辑
{
while((p2=fork())==-1); //创建第二个子进程P2
if(p2==0) //子进程P2的执行逻辑
{
lockf(fd[1],1,0); //锁定管道写端,保证数据写入完整
sprintf(buf,"child process P2 is sending messages!\n"); //在buf中填入准备写入管道的信息数据
printf("child processP2!\n"); //打印“子进程P2正在运行”
write(fd[1],buf,50); //向管道写端fd[1]写入buf中的数据,写完后该数据即可从读端fd[0]读出
sleep(5); //睡眠5秒
lockf(fd[1],0,0); //解锁管道写端
exit(0); //子进程P2退出
}
//以下为主进程执行逻辑
wait(0); //等待某个子进程退出
if(r=read(fd[0],s,50)==-1) //从管道读端fd[0]读取P1或者P2写入的数据(视哪个子进程抢先执行到lockf函数)
{
printf(:can't read pipe\n"); //读取失败,打印错误信息
}
else
{
printf(:%s\n",s); //打印出读到的信息数据
}
wait(0); //等待第二个子进程退出
if(r=read(fd[0],s,50)==-1) //从管道读端fd[0]读取出P1或者P2写入的数据(视哪个子进程后执行到lockf函数)
{
printf(:can't read pipe\n"); //读取失败,打印错误信息
}
else
{
printf(:%s\n",s); //打印读取到的信息数据
}
exit(0); //主进程退出
}
}
总的说来,就是主进程创建了两个子进程P1、P2,这两个子进程分别向管道写入了一行文字,然后主进程从管道另一端将这两行文字读出并打印出来
由于进程的并发执行性,哪个子进程的信息先写到管道是随机的,因此该程序每次运行的输出可能并不相同,两行文字之间可能会相互交换
4.在linux里用C语言编写创建进程、撤销进程,我是新手,求帮助,最好
前面两人说的明显是线程的创建好不好?
用 pid_t fork(void);创建一个子进程
共享数据段和代码段,所以感觉上是会执行两次.
可以在父进程中添加一个wait函数,以便于子进程先退出,再父进程退出.
或者 pid_t vfork(void) 这也是创建一个进程,和前者区别不讲了.
撤销进程的话,在程序里面可以自己从代码角度去退出,也可以在两个进程运行时,通过命令 ps
来查看进程ID,,,在程序里面也可以获取进程的pid,ppid,可以直接在函数里面使用kill(),来终止进程.
5.到底怎么在Linux里编写c程序啊
在linux下通常使用gedit或vim直接编写.c程序,然后通过gcc指令编译。以Ubuntu系统为例,详细过程如下:
1、进入桌面Temp文件夹
2、右键新建空白文件
3、将文件命名为hello.c
4、进入hello.c,开始编写代码(默认gedit为编辑器)
5、编写代码,保存退出
6、点击右列“终端”,或者直接Ctrl+Alt+T通过快捷组合键进入终端
7、进入hello.c所在目录,通过gcc进行编译、链接、生成可执行文件hello,命令为gcc -o hello hello.c。
8、执行(可执行)文件hello,命令为./hello。
参考资料:
GCC——百度百科
Linux常用命令——百度百科
6.linux父进程创建两个子进程
#include"stdio.h"
#include"stdlib.h" //exit包含在stdlib.h头文件中
#include"unistd.h"
int main(void)
{
pid_t pid1,pid2;
pid1=fork();
switch(pid1)
{
case 0: //进程创建成功,返回值为0
printf("b"); //子进程1创建成功,输出b
break;
case -1:
printf("Process creation failed\n");//子进程创建失败,输出错误信息
break;
default:
printf("a");//此时执行父进程,输出a
sleep(1);
exit(0);
break;
}
pid2=fork();
switch(pid2)
{
case 0: //进程创建成功,返回值为0
printf("c"); //子进程2创建成功,输出c
break;
case -1:
printf("Process creation failed\n");//子进程创建失败,输出错误信息
exit(0);
break;
default:
printf("a");//此时执行父进程,输出a
//sleep(1);
exit(0);
break;
}
exit(0);
}
转载请注明出处育才学习网 » linux下c语言编程两个进程怎么写