各位好:
以下代码在linux上编译通过,我现在想让它在
windows环境上编译并且能运行,能否指点我修改一下?
或者帮我看看win环境下有什么库能代替pwd.h和unistd.h实现.万分感谢!!!
/*
* jnohup.c
* jnohup can be used to start JVM with specified user(no SIGHUP affection).
* the $! retured will not be the daemon's process ID
* The way to Compile it:
* gcc -s -o jnohup jnohup.c
* If want to output debug information and debug the program:
* gcc -D -g -o jnohup jnohup.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <pwd.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
void Usage()
{
printf("Usage: jnohup <username> <jvm> <java_method> [[[arg1] arg2] ... ]\n");
}
main(int argc, char * argv[])
{
struct passwd *user_passwd = 0;
pid_t unix_uid = 0;
gid_t unix_gid = 0;
char exec_file[256];
if (getuid()) {
Usage();
printf("Please change to root before running javash!\n");
exit(1);
}
if (argc < 3) {
Usage();
exit(2);
}
user_passwd = getpwnam(argv[1]);
if ( (struct passwd *) 0 == user_passwd ) {
Usage();
printf("Please make sure that the user \"%s\" exists!\n", argv[1]);
exit(3);
}
unix_uid = user_passwd->pw_uid;
unix_gid = user_passwd->pw_gid;
#ifdef DEBUG
printf("Change User to, %d:%d\n", unix_uid, unix_gid);
#endif
if ( setgid(unix_gid) ) {
printf("Change to unix user \"%s\" failure!\n", argv[1]);
exit(4);
}
if ( setuid(unix_uid) ) {
printf("Change to unix user \"%s\" failure!\n", argv[1]);
exit(4);
}
#ifdef DEBUG
printf("After Change User, %d:%d\n", getuid(), getgid());
#endif
strncpy(exec_file, argv[2], 256);
argv = argv + 2;
#ifdef DEBUG
printf("The command will be executed, arg=%s\n", argv[0]);
#endif
signal(SIGHUP, SIG_IGN); /* ignore the SIGHUP signal */
execvp(exec_file, argv);
printf("Please make sure that \"%s\" is in PATH and excutable!\n", exec_file);
}
我在Cygwin下面编译成exe成功了,运行是需要cygwin.dll,拷贝这个dll文件到这个exe文件目录中,运行成功.
但是在程序里面调用后报"Please change to root before running javash!\n",我这里就有点不明白了:
1.是不是linux程序通过Cygwin编译后,任何方法都能在win下面运行,比如getuid(),getpwnam()等?
2.下面的linux方法对应win的方法是什么:getuid(),getpwnam(arg),setgid(unix_gid),setuid(unix_uid)
getuid(), getgid(),signal(SIGHUP, SIG_IGN),execvp(exec_file, argv);
相关推荐
在Windows环境下编译OpenCPN涉及到一系列的技术和工具,下面详细说明各个环节的知识点。 1. 获取OpenCPN源码: - 使用git clone命令可以获取OpenCPN的源码。通过指定一个分支(如beta31_stable)可以获取特定版本...
在Windows环境中,配置文件通常为文本文件,如"Config.ini",可以通过文本编辑器进行编辑。 部署ZLMediaKit时,需要确保所有依赖的dll文件都在可执行文件的同一目录下,这样程序才能正常启动。同时,正确配置配置...
在Windows环境下,你可能需要以管理员权限运行此脚本,因为coturn通常需要监听低编号的端口(如3478)。 7. **测试与调试** 你可以使用coturn自带的测试工具或其他第三方工具来验证服务器是否正常工作。例如,使用...
标题 "ucos在windows下编译运行" 描述了如何在Windows操作系统环境下,利用Visual Studio 2010(VS2010)对实时操作系统(RTOS)uC/OS-II进行编译和运行。这个过程涉及到嵌入式系统开发、操作系统移植、编译工具链的...
**Lua在Windows下的编译与运行环境** Lua是一种轻量级的脚本语言,它以其简洁的语法、高效性能和易于嵌入其他系统的特点而受到广泛欢迎。在Windows平台上搭建Lua的开发和运行环境并不复杂,主要依赖于几个关键组件...
通过以上详细的知识点梳理,我们不仅了解了在Windows平台上编译OpenOffice的基本流程,还掌握了如何准备环境、配置参数、优化构建过程等关键技能。这对于任何希望在Windows系统上构建OpenOffice的人来说都是非常有...
在Windows环境下编译系统应用源码是一个涉及到多个步骤和技术的过程,尤其当涉及到系统签名机制时,需要确保编译出的应用程序能够安全、可靠地运行在操作系统上。以下是一些关键的知识点: 1. **编译环境搭建**:...
了解并掌握在Windows环境下编译PostgreSQL源码是一项重要的技能,这不仅可以帮助你更好地理解和调试系统,而且可以让你在没有预编译包可用的情况下也能顺利使用PostgreSQL。通过实践和学习,你可以熟练地完成这一...
在Windows环境下编译OpenOCD(Open On-Chip Debugger)是一项技术性的工作,涉及到源代码管理、编译工具链和交叉编译等概念。OpenOCD是一个开源的调试工具,主要用于嵌入式系统,它支持多种微控制器和FPGA设备的JTAG...
首先,我们理解交叉编译的概念:交叉编译是指在一个平台上生成另一个平台的可执行代码,例如在Windows环境下编译出适用于树莓派(基于ARM架构的Linux系统)的程序。 1. **Qt环境搭建**:在Windows环境下,通常使用...
既可以支撑QGIS在Windows环境下的编译工作,也可以进行exiv2的二次研发。 四、其他说明 在Windows环境下,基于Qt Creator进行编译的exiv2开源库。包含有头文件include、库文件lib、动态库dll等,提供了Debug、...
标题"libevent-2.0.22-stable在windows环境下使用mingw编译"指的是一个关于使用MinGW编译工具在Windows操作系统上构建libevent库的2.0.22稳定版本的过程。libevent是一个开源的、跨平台的事件通知库,它提供了一种...
其次,我们需要安装 Cygwin,这是一个 Unix 模拟环境,可以模拟 Unix 环境在 Windows 上运行。我们可以从 WebKit 官网下载 cygwin-downloader.zip,并解压缩后运行 cygwin-downloader.exe,以下载和安装所需的软件包...
在Windows环境下编译FreeRDP是一项对初学者来说可能颇具挑战性的任务,因为涉及到许多步骤和技术细节。FreeRDP是一个开源的远程桌面协议(RDP)客户端,它允许用户通过命令行或其他应用程序接口与远程Windows系统进行...
描述中提到“网上大部分libtorrent源码只能在Linux上编译”,这表明在开源社区中,libtorrent的源代码通常是为Linux系统设计和优化的,可能由于依赖于特定的Linux工具链或者构建系统,导致在Windows环境下编译存在...
### 在Windows环境下使用MSYS与MinGW编译U-Boot代码 #### 一、搭建MSYS与MinGW环境 在Windows环境下编译U-Boot,首先需要安装MSYS与MinGW来提供必要的编译工具链。 **1. MSYS与MinGW** - **MSYS**(Minimal ...
既可以支撑QGIS在Windows环境下的编译工作,也可以进行lzma的二次研发。 四、其他说明 在Windows环境下,基于Qt Creator进行编译的lzma开源库。包含有头文件include、库文件lib、动态库dll等,提供了Debug、Release...
**Windows环境下编译MNN1.2.0详解** MNN,全称为MindSpore Native Neural Network,是由阿里云开发的一款高效、轻量级的深度学习推理框架。它旨在为移动设备、嵌入式硬件以及服务器等不同平台提供高性能的模型运行...
既可以支撑QGIS在Windows环境下的编译工作,也可以进行libzstd的二次研发。 四、其他说明 在Windows环境下,基于Qt Creator进行编译的libzstd开源库。包含有头文件include、库文件lib、动态库dll等,提供了Debug、...