我一直在考虑环境变量,并有一些问题/观察.
putenv(char *string);
这个电话似乎有致命的缺陷.因为它不复制传递的字符串,所以无法使用本地调用它,并且无法保证堆分配的字符串不会被覆盖或意外删除.此外(尽管我还没有测试过),因为环境变量的一个用途是将值传递给子环境,如果子进程调用其中一个exec*()函数,这似乎没用.我错了吗?
Linux手册页指出glibc 2.0-2.1.1放弃了上述行为并开始复制字符串,但这导致了glibc 2.1.2中修复的内存泄漏.我不清楚这个内存泄漏是什么或它是如何修复的.
setenv()复制字符串,但我不确切知道它是如何工作的.当进程加载但是它被修复时,将分配环境空间.这里有一些(任意?)惯例吗?例如,在env字符串指针数组中分配比当前使用的更多的插槽,并根据需要向下移动空终止指针?是否在环境本身的地址空间中分配了新的(复制的)字符串的内存,如果它太大而不适合您只需获得ENOMEM?
考虑到上述问题,有什么理由,更喜欢putenv()过setenv()?
我需要将我的apache环境设置为'foobar'
我知道我需要在我的虚拟主机中输入,但是我应该在那里输入什么?
是否可以根据主机名在.htaccess文件中设置不同的SetEnv变量?
例如,我需要我的.htaccess文件具有以下值:
SetEnv PYRO_ENV production
Run Code Online (Sandbox Code Playgroud)
在生产箱上,......
SetEnv PYRO_ENV stage
Run Code Online (Sandbox Code Playgroud)
在分期盒子上.该.htaccess文件受版本控制,这就是我正在寻找条件解决方案的原因.
我在setenv中使用以下命令从我运行的地方导入环境变量,但有没有办法导入所有变量,这样我就不需要逐个导入了.
例如:{env:TEMPEST_CONFIG:}和{env:TEMPEST_CONFIG_DIR:}用于导入这两个变量.
[testenv:nosetests]
setenv =
TEMPEST_CONFIG={env:TEMPEST_CONFIG:}
TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:}
deps = {[testenv]deps}
commands =
find . -type f -name "*.pyc" -delete
bash {toxinidir}/tools/setup.sh
nosetests --with-xunit {posargs}
Run Code Online (Sandbox Code Playgroud) 我下载并解压缩了apache-tomcat-7.0.根据RUNNING.txt(%CATALINA_BASE%/ RUNNING.txt)中的说明,它应该在"setenv.sh"文件中设置JRE_HOME.
这个文件在哪里?文档说,它将在CATALINA_HOME/bin目录中.但是这个文件不存在.
我需要导出几个变量,使它们在命令行中看起来如下所示
export ROS_HOSTNAME=xxx
Run Code Online (Sandbox Code Playgroud)
如何在c ++中使用setenv()来实现呢?
谢谢.
我想使用setenv设置一个环境变量:
setenv NODE_ENV localhost
Run Code Online (Sandbox Code Playgroud)
但setenv给我一个错误,说找不到命令.有谁知道如何执行相当于setenv的MAC OSX?谢谢!
我在我的ubuntu homeserver上安装了Zend.在我的.htaccess文件中,我有以下代码:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
当我在公共文件夹中的index.php中回显APPLICATION_ENV时,未设置APPLICATION_ENV.
我究竟做错了什么?
在apache中启用了Mod重写.
反正是有使用在设定值SetEnv上RewriteRule发言?
例:
SetEnv MY_SCRIPT myScript.php
rewriteEngine on
RewriteRule ^(.*)$ %{MY_SCRIPT} [L]
Run Code Online (Sandbox Code Playgroud) 根据我在网上找到的所有文档,看我的代码似乎是正确的.我的IDE是MS Visual Studio Xpress 4 Windows桌面2012,它的编译器抛出了错误:
Error 1 error C3861: 'setenv': identifier not found e:\users\owner\documents\visual studio 2012\projects\project1\project1\source1.cpp 18 1 Project1.
帮我!!!
#include <windows.h>
#include <sstream>
#include <ostream>
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
using namespace std;
int howManyInClass = 0;
int main(){
long checklength = sizeof(getenv("classSize"))/sizeof(*getenv("classSize"));
if (checklength==0){
cout<<"Please enter the ammount of students in your class";
cin>> howManyInClass;
cin.ignore();
setenv("classSize", howManyInClass, 1);}
};
Run Code Online (Sandbox Code Playgroud) c++ environment-variables setenv visual-c++ visual-studio-2012
setenv ×10
.htaccess ×2
apache ×2
c++ ×2
bash ×1
c ×1
command-line ×1
java ×1
linux ×1
macos ×1
mod-rewrite ×1
php ×1
pyrocms ×1
python ×1
tomcat ×1
tomcat7 ×1
tox ×1
unix ×1
virtualenv ×1
visual-c++ ×1