Я не уверен (это было давно), но мне кажется, что это отсылка к старой программе Linux (1992): ftp://ftp2.de.freebsd.org/pub/linux/tsx-11/sources/usr.bin/doshell.c :
#include
#include
#include
extern char *sys_errlist[];
main(int argc, char *argv[])
{
if (argc != 3) {
fprintf(stderr, "usage: doshell &\n");
exit(1);
}
/* close down fd's */
close(0);
close(1);
close(2);
/* detach from parent process's group */
setsid();
/* open new tty */
if (open(argv[1], O_RDWR, 0) == -1)
exit(2);
dup(0);
dup(0);
execlp(argv[2], "-", 0);
/* should appear on new tty...: */
fprintf(stderr, "can't exec shell: %s\n", sys_errlist[errno]);
exit(3);
}
Это также может относиться к старой подпрограмме Minux: http://users.sosdg.org/~qiyong/mxr/source/commands/mail/mail.c#L702
void doshell(command)
char *command;
{
int waitstat, pid;
char *shell;
if (NULL == (shell = getenv("SHELL"))) shell = SHELL;
if ((pid = fork()) < 0) {
perror("mail: couldn't fork");
return;
} else if (pid != 0) { /* parent */
wait(&waitstat);
return;
}
/* Child */
setgid(getgid());
setuid(getuid());
umask(oldmask);
execl(shell, shell, "-c", command, (char *) NULL);
fprintf(stderr, "can't exec shell\n");
exit(127);
}
Обе подпрограммы, похоже, имеют функциональность, описанную в ответе stackoverflow, и это не кажется маловероятным первый произошел от второго.
Если вы изменили 831092,25a1bd66f2eec71aa2f0a8bb3d,/path/to/a/file
на/path/to/a/file,831092,25a1bd66f2eec71aa2f0a8bb3d
Вы можете сделать это с помощью:
look /path/to/ /dev/shm/tmp.file
look
— традиционная утилита Unix 70-х годов, не указанная в POSIX, но довольно распространенная. В Debian и его производных вы найдете один в пакете bsdmainutils
, а также в util -linux (, также скопированном из BSD, а не в одноименном пакете Debian ).
look
mmap()
просматривает файл и выполняет бинарный поиск.
Однако обратите внимание, что реализация Debian возвращается к базовому линейному поиску а-ля grep
, если вы не передадите -b
опцию (вздох ). Итак, в Debian или его производных вам понадобится:
look -b /path/to/ /dev/shm/tmp.file
Также обратите внимание, что некоторые реализации имеют ограничение на размер файла, который они могут обработать(см. соответствующую ошибку с патчем для Debian)