标签: systems-programming

是否可以在C或C++中实现小型磁盘操作系统?

不是想做任何这样的事情,但我想知道是否可以在C中实现"整个操作系统"(不一定像Linux或Microsoft Windows那样大,但更像是一个类似DOS的操作系统)和/或C++使用no或little程序集.

通过实现操作系统,我的意思是从头开始使用C或C++将启动加载程序和内核启动到图形驱动程序(以及可选的GUI).通过编译器访问低级功能,我在C++中看到了一些低级的东西.这可以在整个操作系统上完成吗?

我不是在问这是不是一个好主意,我只是想问它是否可以远程实现?

c c++ operating-system systems-programming

10
推荐指数
1
解决办法
479
查看次数

如何在不使用POSIX库<pthread.h>的情况下在C中创建线程

我想在不使用任何POSIX库的情况下在C中实现多线程.任何帮助,将不胜感激.

不:不要使用fork()或vfork().

c unix multithreading systems-programming

10
推荐指数
2
解决办法
8374
查看次数

叉子实施

fork系统调用代码是如何编写的.我想知道一些函数如何返回两个不同的值以及两个不同的进程的细节.总之想知道fork系统调用是如何实现的?

c unix operating-system systems-programming

9
推荐指数
2
解决办法
1万
查看次数

如何以编程方式真正清理删除文件?

因此,您即将把工作计算机传递给您的同事.您如何确保真正删除所有个人数据?

重新格式化,重新安装操作系统不会真正解决问题.

我四处搜索,发现 一些 程序会"擦掉"磁盘.

这让我想到这些程序是如何工作的?我的意思是,他们使用什么算法以及这些实现的低级别?

有任何想法吗?

filesystems hard-drive systems-programming

8
推荐指数
3
解决办法
2068
查看次数

如何利用自己的编程语言利用VDSO对象?

最近的Linux内核(至少在amd64上)提供了一个魔术对象文件linux-vdso.so.1,该文件将syscall接口抽象到内核,允许内核选择最佳的调用约定.如果用C编写代码,glibc会自动使用该对象.

现在,如果我想在不使用glibc的情况下编写程序,我该如何使用这个对象?它提供的界面是否记录在某处?召唤大会怎么样?

linux system-calls systems-programming

8
推荐指数
2
解决办法
6057
查看次数

Linux系统编程

我想进入Linux的系统编程,并想知道如何处理它以及从哪里开始.我来自Web开发背景(Python,PHP),但我也知道一些C和C++.

基本上,我想知道:

  1. 学习和追求哪种语言(我认为主要是C和C++)?
  2. 如何/在哪里学习特定于系统编程的语言?书籍,网站,博客,教程等.
  3. 还有其他好的地方我可以从基础开始吗?
  4. 有什么好的图书馆可以开始吗?
  5. 我需要什么环境设置(或大约)?假设linux必须在那里,但我有一个linux盒子,我很少使用GUI登录(总是使用SSH).GUI是否更有用,或者VI编辑器就足够了?(如果这部分问题应该发送到serverfault.com,请告诉我)

PS:只是为了澄清,系统编程我的意思是编写设备驱动程序,系统工具,编写本机应用程序,这些应用程序在Linux平台上不存在但在其他程序上,与Linux内核一起使用等.

linux linux-kernel systems-programming

7
推荐指数
1
解决办法
2236
查看次数

如何从设备管理器获取信息?

在我的C#应用​​程序中,如何阅读有关设备的特定信息?我尝试过WMI,它不提供我需要的信息.

我想要的信息存储在设备的详细信息选项卡中,我想要的信息是"父".

我也看了注册,没有任何运气.

.net c# windows device systems-programming

7
推荐指数
1
解决办法
8382
查看次数

(ORIG_EAX*4)在ptrace调用中

我在这里看了一篇文章,并且正在尝试我在下面复制的代码片段: -

#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <linux/user.h>   /* For constants
                                   ORIG_EAX etc */
int main()
{   pid_t child;
    long orig_eax;
    child = fork();
    if(child == 0) {
        ptrace(PTRACE_TRACEME, 0, NULL, NULL);
        execl("/bin/ls", "ls", NULL);
    }
    else {
        wait(NULL);
        orig_eax = ptrace(PTRACE_PEEKUSER,
                          child, 4 * ORIG_EAX,
                          NULL);
        printf("The child made a "
               "system call %ld\n", orig_eax);
        ptrace(PTRACE_CONT, child, NULL, NULL);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我怀疑究竟ORIG_EAX是什么以及为什么4*ORIG_EAX传递给ptrace调用.我最初假设ORIG_EAX,EBX …

c linux ptrace systems-programming

7
推荐指数
1
解决办法
3192
查看次数

mkfifo()错误--->"创建命名管道时出错:文件存在"

mkfifo函数有两个参数,路径和模式.但我不知道它使用的路径的格式是什么.我正在编写一个小程序来创建一个命名管道并作为路径mkfifo./home/username/Documents例如,使用消息,它总是返回-1 Error creating the named pipe.: File exists.

我已经检查了很多次这个目录,里面没有管道.所以我想知道问题是什么.我在mkfifo中使用的模式是0666或0777.

c mkfifo systems-programming

7
推荐指数
1
解决办法
1万
查看次数

无法进入系统调用源代码

我用-g选项编译了我的freebsd libc源代码,现在我可以介入libc函数了.

但我无法进入系统调用代码.我用-g编译了freebsd内核源代码.在设置断点时,gdb会在.S文件上通知断点.在点击断点时,gdb无法进入系统调用源代码.

另外,我试过:gdb $ catch系统调用打开

但这也行不通.

你能建议一下吗?

谢谢.

unix gdb systems-programming

6
推荐指数
1
解决办法
3444
查看次数