最近项目要求需要在C语言中调用shell脚本。
static int execute_script(const char * filename)
{
#if defined(_WIN32) || defined(_WIN64)
//
printf("EXECUTE FILE.... %s\n",filename);
#else
pid_t pid = 0;
if(0 == (pid = fork()))
{
if(0 == access("/bin/sh", 0))
execl("/bin/sh", "sh", "-c", filename,NULL);
if(0 == access("/bin/bash", 0))
execl("/bin/bash","bash", filename,NULL);
exit(0);
}
return pid;
#endif
}
附上一个换行模式转换函数
int lfmode_tounix(char * str, int len)
{
char c, * p=str, *p1=str;
while(len--)
{
c= *p++;
switch(c)
{
case '\r':
if(*p != '\n') // only macintosh mode convert to unix mode.
*p1++ = '\n';
// default skip cr.
break;
default:
*p1++ = c;
break;
}
}
*p1='\0';
return p1-str;
}