You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
496 B
30 lines
496 B
void |
|
newterm(const Arg* a) |
|
{ |
|
int res; |
|
switch (fork()) { |
|
case -1: |
|
die("fork failed: %s\n", strerror(errno)); |
|
break; |
|
case 0: |
|
switch (fork()) { |
|
case -1: |
|
die("fork failed: %s\n", strerror(errno)); |
|
break; |
|
case 0: |
|
res = chdir(getcwd_by_pid(pid)); |
|
execlp("st", "./st", NULL); |
|
break; |
|
default: |
|
exit(0); |
|
} |
|
default: |
|
wait(NULL); |
|
} |
|
} |
|
|
|
static char *getcwd_by_pid(pid_t pid) { |
|
char buf[32]; |
|
snprintf(buf, sizeof buf, "/proc/%d/cwd", pid); |
|
return realpath(buf, NULL); |
|
} |