linux 下的c语言编程,该怎么解决

linux 下的c语言编程
输入文件的路径(用户自己定义),如何实现此功能的调用在c语言中,类似于任务管理器中输入创建新任务的功能,如何通过c代码实现自主控制。求大神指点一二,最好能附代码。。。。纠结死了。这个问题。。。。。
------解决思路----------------------
fork + exec 就可以了啊
------解决思路----------------------
http://blog.chinaunix.net/uid-21411227-id-1826717.html
http://www.cnblogs.com/hnrainll/archive/2011/07/23/2114854.html
http://blog.****.net/hustspy1990/article/details/7448242
------解决思路----------------------
一定是代码写的不对,就是 fork+exec,没什么复杂的
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

代码真是让人看得惨不忍睹啊

不用这么打击他,谁不都是从菜鸟开始起步呢?
让楼主先解释一下思路吧

就是类似于任务管理器中的“新任务”功能,那么我要输入一个运行命令的路径和文件名称。
没办法,我开始用exec可是发现传参数进去不好使,没反应,然后我就决定使用文件读写的形式,写一个脚本
然后用system执行这个脚本,之后在删除这个脚本。就是这么个过程。
关键问题就是参数的问题,传进去,可是不好使,所以我就换了个思路,可是对于其中的参数提取和路径提取
没有办法解决,只好用切割的方法,把需要的东西提取出来,所以才写的这么长,而且个人感觉还是很乱。。。。

没什么不好使的,这东西很简单,就那么几个参数而已,可能你对参数的理解有偏差
execl("/bin/echo", "echo", "executed by execl", NULL)
execl("/bin/ls", "ls", "/azuo", "-la", (char *)0 )
诸如此类……
------解决思路----------------------
看这帖子很久没结感觉也是............
不说废话了,我自己弄了一个给LZ看下,不过到现在我还是不明白LZ说的文件时二进制文件,还是shell脚本文件,所以我写了一个能运行二进制文件的程序,不过它还是可以执行shell的命令的,下面是代码
//task.c
//实现运行指定任务的程序
#include <stdio.h>
#include <unistd.h>
#include <string.h>

int is_shell(char *c)
{
int i;
for(i=0;c[i];i++)
if(c[i]=='/') return 0;
return 1;
}


int 
main(int argc,char* argv[])
{
char **arg;
int i;
int start=is_shell(argv[1]);
if(argc==2 && !start)
{
execvp(argv[1],NULL);
return 0;
}
else 
arg = (char **) malloc((argc-2+start)*sizeof(char*));
if(start)
{
arg[0] = (char *) malloc(strlen(argv[1])+1);
strcpy(arg[0],argv[1]);
}
for(i=1;i<argc-1;i++)
{
arg[start+i-1] = (char *) malloc(strlen(argv[i+1])+1);
strcpy(arg[start+i-1],argv[i+1]); 
}
arg[start+argc-2]=NULL;
execvp(argv[1],arg);
return 0;
}

//test2.c
//测试上面程序功能的程序,作用就是把接收到的参数打印出来
#include <stdio.h>

int 
main(int argc,char* argv[])
{
int i;
for(i=0;i<argc;i++)
printf("%s\n",argv[i]);
return 0;
}

下面是运行结果
linux 下的c语言编程,该怎么解决
要是想运行shell脚本也不难,改下就好,还是不会我可以再改下