21 lines
811 B
C
21 lines
811 B
C
/* shell.h - 交互式 shell 会话 */
|
|
#ifndef LIGENT_SHELL_H
|
|
#define LIGENT_SHELL_H
|
|
|
|
#include <stddef.h>
|
|
|
|
/* 起一个交互式 shell, 用户在里面随便敲; 退出时把整段会话录制下来.
|
|
*
|
|
* 用伪终端 (pty)做双向搬运: 子进程以为自己接在真终端上, 所以行编辑、
|
|
* 颜色、Ctrl-C、作业控制都照常工作; 我们在外面旁听并把输出记下来.
|
|
*
|
|
* out_code 回填子进程退出码.
|
|
* 返回 malloc 的录制文本 (已去掉 ANSI 控制序列, 最长 LIGENT_SHELL_MAX);
|
|
* 失败返回 NULL 并写 errbuf. 退出码 127 表示 shell 都没找到. */
|
|
char *shell_interactive(int *out_code, char *errbuf, size_t errlen);
|
|
|
|
/* 录制文本的长度上限. 直接进上下文, 不能没边 */
|
|
#define LIGENT_SHELL_MAX (100 * 1024)
|
|
|
|
#endif /* LIGENT_SHELL_H */
|