gpt4 book ai didi

c - 从 C 代码打开 Linux 控制台

转载 作者:行者123 更新时间:2023-11-30 17:28:47 26 4
gpt4 key购买 nike

我正在尝试使用我的 x86-64 桌面来学习和理解 Linux。我使用 OpenSuse 13.1 作为我的工作系统来多重启动 Linux。我在自己的分区上创建了一个学习系统,只有 2 个文件。我已经编译了一个 3.16.2 内核,其默认选项位于/boot 中。以下文件初始化:

int main() {
int nbytes = 100;
char * str;
str = (char *) malloc(nbytes + 1);
puts ("Please Enter text");
while (1) {
getline(&str, &nbytes, stdin);
puts(str);
puts("line recieved");
if (str[0] == 'r')
reboot(0x1234567);
if (str[0] == 's')
reboot(0x4321fedc);
}
return 0;
}

是静态编译的,位于/sbin 中。 Init 是一个非常原始的 shell,但是用 C 代码进一步开发它会很麻烦。维基百科说:

“Linux 控制台是 Linux 内核内部的系统控制台”

所以,如果这确实在内核中,我可以从我的初始化程序中调用这个控制台,而不必添加任何其他依赖项/文件/程序吗?如果是这样怎么办?我需要使用特定选项重建内核吗?如果不是,我怎样才能用绝对最少的文件获得控制台/终端/CLI shell,以便我可以轻松调用基本的系统命令?

注意我已经安装了很多次 Arch,但是 Arch 和 Linux From Scratch 在其最基本的系统中都有数百个甚至数千个文件。另外,我正在尝试总体了解 Linux,嵌入式 Linux 和 Android 可以使用完全不同的附加功能,因此我正在尝试不同的学习方法。

最佳答案

尝试使用 fork() 和 exec() 来启动 bash 程序。

fork();
exec("path/to/bash");

你甚至可以做类似 exec("bash myscript.sh"); 的事情

编辑:您可能需要选择 exec 系列函数之一

关于c - 从 C 代码打开 Linux 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com