A. Linux中 匯編 *char[] 如何定義使用,麻煩也給出匯編 execve系統調用的實例。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
int my_system(char *ch)
{
pid_t pid = vfork();
if(pid < 0){
perror("pid");
}
if(pid == 0){
char *buf[]={"","-c","ls",NULL};
// execlp("/bin/sh","","-c",ch,NULL);
execve("/bin/sh",buf,NULL);
//第一個參數是一個完整路徑,第二個是參數地址數組。第三個是環境變,沒需要的話就NULL。
_exit(1);
}
else{
int status;
waitpid(-1,&status,0);
if(WIFEXITED(status) == 0){
printf("error");
fflush(stdout);
}
}
return 0;
}
int main(int argc, char * argv[])
{
while(1)
{
char cmd[100];
printf("cmd:");
fflush(stdout);
fgets(cmd, sizeof(cmd), stdin);
cmd[strlen(cmd) - 1] = 0;
my_system(cmd);
}
return 0;
}