mypid.c

来自「android-w.song.android.widget」· C语言 代码 · 共 75 行

C
75
字号
/* This module should be dynamically loaded with enable -f * which would create a new builtin named mypid. You'll need * the source code for GNU bash to recompile this module. * * Then, from within bash, enable -f ./mypid enable_mypid, where ./mypid * is the binary obtained from running make. Hereafter, `${MYPID}' * is a shell builtin variable. */#include <stdio.h>#include <errno.h>#include <string.h>#include "builtins.h"#include "shell.h"#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \  do \    { SHELL_VAR *v = bind_variable (var, (val), 0); \      v->dynamic_value = gfunc; \      v->assign_func = afunc; \    } \  while (0)static SHELL_VAR *assign_mypid (     SHELL_VAR *self,     char *value,     arrayind_t unused,     char *key ){  return (self);}static SHELL_VAR *get_mypid (SHELL_VAR *var){  int rv;  char *p;  rv = getpid();  p = itos (rv);  FREE (value_cell (var));  VSETATTR (var, att_integer);  var_setvalue (var, p);  return (var);}intenable_mypid_builtin(WORD_LIST *list){  INIT_DYNAMIC_VAR ("MYPID", (char *)NULL, get_mypid, assign_mypid);  return 0;}char const *enable_mypid_doc[] = {  "Enable $MYPID.",  "",  "Enables use of the ${MYPID} dynamic variable.  ",  "It will yield the current pid of a subshell.",  (char *)0};struct builtin enable_mypid_struct = {  "enable_mypid",  enable_mypid_builtin,  BUILTIN_ENABLED,  (char**)(void*)enable_mypid_doc,  "enable_mypid N",  0};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?