我正在使用execl函数从C运行Linux进程,例如:
int cmd_quem() {
int result;
result = fork();
if(result < 0) {
exit(-1);
}
if (result == 0) {
execl("/usr/bin/who", "who", NULL);
sleep(4); //checking if father is being polite
exit(1);
}
else {
// father's t
在我的linux嵌入式设备中,我以以下方式运行prngd:
prngd /var/run/egd-pool
在系统日志中,我得到以下错误:
192.168.8.195.34453:<29>Jan 1 00:04:49 prngd[132]: prngd 0.9.29 (12 Jul 2004) started up for user root
192.168.8.195.34453:<29>Jan 1 00:04:49 prngd[132]: have 7 out of 1024 filedescriptors open
192.168.8.195.34453:
我在理解linux中的fork()时遇到了一些问题。
令我困惑的是,如果一个父进程派生了一个子进程,而该子进程调用了execl()和
execl()没有返回,父进程等待子进程退出,系统会这样做吗
吊死?
提前感谢您的帮助。
下面是来自mdadm的代码示例。因此,在execl()之后的子进程中有exit(1)。如果execl()没有返回,那么exit(0)还会执行吗?如果没有,那么父母会无限期地等待吗?我说对了吗?
if (!check_env("MDADM_NO_SYSTEMCTL"))
switch(fork()) {
case 0:
/* F
我的导师说,要完全按照手册页中给出的方式复制Linux的system()函数。我写了下面的代码。有谁能回顾一下这段代码,给我一些即兴创作的建议吗?我是个初学者。谢谢:)。
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<error.h>
int my_system(const char *command);
int my_system(const char *command)
{
int ret
(请看下面我的最后代码;访问教授后的工作版本)
程序设置子到父管道;子程序使用'exec‘来执行“预”进程,其输出连接到连接到父进程的管道,而管道由'exec’执行“排序”进程。
到目前为止的变化:代码仍然是冻结的。我更改了exec()调用并做了其他更改。
不知道问题在哪里。
第一次修订
/*
Student: Douglas Adolph
Course: Operating Systems
Project #: 1: Part2_childToParent.c
*/
/* The second example of pipe, between a parent an
你不需要从头开始看完整的代码。问题出在execl(..)main中的语句。代码是--
#include <cstdio>
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <sys/wait.h>
#include <vector>
#define li long int
using namespace std;
char TypedCommandInTerminal[1001];
vector <string> Va
我有一个简单的C程序,它使用fork()和execl()执行应用程序。如果execl()无法运行应用程序,那么我必须调用父进程中的函数并从子进程中退出。如果execl()成功地运行了应用程序,那么我已经显示了来自父进程的成功日志。因此,父进程应该等待子进程的execl()调用(只是调用,而不是直到应用程序的执行结束),获取一些关于它的状态的信息,然后做出决定并继续自己的执行。这是我的代码。
int main()
{
int iExecRetVal, pid;
pid = fork();
if (pid == -1)
{
}
else if (