QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 943|回复: 11

请问如何在exec时指定新进程在后台运行?

[复制链接]
发表于 2004-5-25 18:03:17 | 显示全部楼层 |阅读模式
多谢!
发表于 2004-5-26 00:14:28 | 显示全部楼层
没用过,加个&行不?
回复

使用道具 举报

 楼主| 发表于 2004-5-26 15:03:53 | 显示全部楼层
加“&”也不行
回复

使用道具 举报

发表于 2004-5-26 16:00:16 | 显示全部楼层
运行有什么现象?
回复

使用道具 举报

 楼主| 发表于 2004-5-27 22:37:07 | 显示全部楼层
和不加"&"的效果一样
回复

使用道具 举报

发表于 2004-5-27 22:41:49 | 显示全部楼层
做成守护进程。
回复

使用道具 举报

 楼主| 发表于 2004-5-27 23:26:00 | 显示全部楼层
有道理,谢谢!
回复

使用道具 举报

发表于 2004-5-28 10:29:29 | 显示全部楼层
用fork2可以脱离父进程,也算是后台进程吧
回复

使用道具 举报

发表于 2004-5-29 00:46:38 | 显示全部楼层
请问exec的具体用法是什么啊?
现在急需要知道!
回复

使用道具 举报

发表于 2004-5-29 12:13:21 | 显示全部楼层
man 2 exec
回复

使用道具 举报

发表于 2004-6-1 14:34:58 | 显示全部楼层
[code:1]
        #include <stdio.h>
        #include <stdlib.h>
        #include <sys/types.h>
        #include <unistd.h>
        /* Spawn a child process running a new program. PROGRAM is the name
        of the program to run; the path will be searched for this program.
        ARG_LIST is a NULL-terminated list of character strings to be
        passed as the program’s argument list. Returns the process ID of
        the spawned process. */
        int spawn (char* program, char** arg_list)
        {
                pid_t child_pid;
                /* Duplicate this process. */
                child_pid = fork ();
                if (child_pid != 0)
                /* This is the parent process. */
                return child_pid;
                else
                {
                        /* Now execute PROGRAM, searching for it in the path. */
                        execvp (program, arg_list);
                        /* The execvp function returns only if an error occurs. */
                        fprintf (stderr, “an error occurred in execvp\n”);
                        abort ();
                }
        }
        int main ()
        {
                /* The argument list to pass to the “ls” command. */
                char* arg_list[] =
                {
                        “ls”, /* argv[0], the name of the program. */
                        “-l”,
                        “/”,
                        NULL /* The argument list must end with a NULL. */
                };
                /* Spawn a child process running the “ls” command. Ignore the
                returned child process ID. */
                spawn (“ls”, arg_list);
                printf (“done with main program\n”);
                return 0;
        }

[/code:1][/code]
回复

使用道具 举报

发表于 2004-6-1 14:35:18 | 显示全部楼层
[code:1]
        #include <stdio.h>
        #include <stdlib.h>
        #include <sys/types.h>
        #include <unistd.h>
        /* Spawn a child process running a new program. PROGRAM is the name
        of the program to run; the path will be searched for this program.
        ARG_LIST is a NULL-terminated list of character strings to be
        passed as the program’s argument list. Returns the process ID of
        the spawned process. */
        int spawn (char* program, char** arg_list)
        {
                pid_t child_pid;
                /* Duplicate this process. */
                child_pid = fork ();
                if (child_pid != 0)
                /* This is the parent process. */
                return child_pid;
                else
                {
                        /* Now execute PROGRAM, searching for it in the path. */
                        execvp (program, arg_list);
                        /* The execvp function returns only if an error occurs. */
                        fprintf (stderr, “an error occurred in execvp\n”);
                        abort ();
                }
        }
        int main ()
        {
                /* The argument list to pass to the “ls” command. */
                char* arg_list[] =
                {
                        “ls”, /* argv[0], the name of the program. */
                        “-l”,
                        “/”,
                        NULL /* The argument list must end with a NULL. */
                };
                /* Spawn a child process running the “ls” command. Ignore the
                returned child process ID. */
                spawn (“ls”, arg_list);
                printf (“done with main program\n”);
                return 0;
        }

[/code:1][/code]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 05:58 , Processed in 0.043065 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表