小编tpa*_*r44的帖子

未定义的引用

当我编译链表的代码时,我得到了一堆未定义的引用错误.代码如下.我一直在编写这两个语句:

g++ test.cpp 
Run Code Online (Sandbox Code Playgroud)

以及

g++ LinearNode.h LinearNode.cpp LinkedList.h LinkedList.cpp test.cpp  
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么我会收到这些错误,因为我对C++中的类很生疏.我真的可以使用一些帮助.

LinearNode.h:

#ifndef LINEARNODE_H
#define LINEARNODE_H
#include<iostream>

using namespace std;

class LinearNode
{
    public:
        //Constructor for the LinearNode class that takes no arguments 
        LinearNode();
        //Constructor for the LinearNode class that takes the element as an argument
        LinearNode(int el);
        //returns the next node in the set.
        LinearNode* getNext();
        //returns the previous node in the set
        LinearNode* getPrevious();
        //sets the next element in the set
        void setNext(LinearNode* node);
        //sets the previous element …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-reference

23
推荐指数
3
解决办法
18万
查看次数

提升安装

我有关于安装库的问题.有没有我可以使用sudo apt-get install安装此软件包的软件包.我搜索了这个论坛中的所有问题,并使用命令sudo apt-get install libboost1.40-dev我无法安装该软件包.另外,我可以从boost.org下载它,但我也不知道安装它的正确途径.sudo apt-get install如果可能的话,我更愿意使用命令安装它.我正在使用Ubuntu 9.04.谢谢.

linux installation boost ubuntu-9.04

21
推荐指数
3
解决办法
6万
查看次数

在Apache2中执行Python脚本

我正在尝试使用Apache执行Python程序.但是,Apache只会提供文件而不会实际执行它.该文件的权限是r/w/x,它是在/var/www.我将发布后面的内容httpd.conf和程序代码.我也尝试将python脚本作为.cgi文件运行但是也没有用.我也将这些mod_pythonmod_wsgi模块加载到apache中.

Python示例:

#!/usr/bin/python

# enable debugging
import cgitb
cgitb.enable()

print "Content-Type: text/plain\r\n\r\n"
print

print "Hello World!"
Run Code Online (Sandbox Code Playgroud)

httpd.conf中:

AddHandler cgi-script .cgi .pl
AddHandler python-program .py
Run Code Online (Sandbox Code Playgroud)

我知道它是一个小的httpd.conf文件但是当我安装apache时,文件中没有任何内容.我还要提一下,这只是为了让我学习在apache中运行python的基础知识.它不适合生产.谢谢您的帮助!

编辑

我正在使用的操作系统是Ubuntu 10.04,apache的版本是2.我有python版本2.6,它在#!/usr/bin/env python调用时自动使用.
我收到两个主要错误,第一个是即使文件和文件夹的权限是777,也找不到文件.日志中的错误是

[Sun Feb 05 13:29:44 2012] [error] [client 192.168.1.3] File does not exist: /var/www/poit-0.1
Run Code Online (Sandbox Code Playgroud)

这个错误是针对我没写的不同的python脚本.奇怪的是,当从浏览器窗口访问时,文件显示在文件夹的索引中.但是,当我导航到该文件时,我收到上述错误.

我得到的另一个错误是标头的过早结束.错误如下:

[Sun Feb 05 12:10:19 2012] [error] (8)Exec format error: exec of '/var/www/pyth.py' failed
[Sun Feb 05 12:10:19 2012] [error] [client 192.168.1.3] Premature end …
Run Code Online (Sandbox Code Playgroud)

python apache cgi

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

将套接字绑定到IPv6地址

我正在尝试编写一个侦听IPv4和IPv6地址的Web服务器.但是,我最初写的代码不起作用.然后我发现IPv6结构适用于IPv4和IPv6.所以现在我使用IPv6结构,但只有IPv4地址可以工作.这篇文章,为什么我不能将ipv6套接字绑定到一个linklocal地址,其中说添加server.sin6_scope_id = 5;所以我这样做但它仍然不接受IPv6 telnet连接.任何帮助将不胜感激,因为我彻底难倒.
谢谢!

我的代码如下:

void initialize_server(int port, int connections, char* address)
{
        struct sockaddr_in6 socket_struct;
        /*Creates the socket*/
        if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        {
                syslog(LOG_ERR, "%s\n", strerror(errno));
                exit(EXIT_FAILURE);
        }/*Ends the socket creation*/

        /*Populates the socket address structure*/
                socket_struct.sin6_family = AF_INET6;

        if(address == NULL)
                socket_struct.sin6_addr=in6addr_any;
        else
        {
                inet_pton(AF_INET6, "fe80::216:3eff:fec3:3c22", (void *)&socket_struct.sin6_addr.s6_addr);
        }
        socket_struct.sin6_port =htons(port);
        socket_struct.sin6_scope_id = 0;
        if (bind(sock_fd, (struct sockaddr*) &socket_struct, sizeof(socket_struct)) < 0)
        {
                syslog(LOG_ERR, "%s\n", strerror(errno));
                exit(EXIT_FAILURE);
        }//Ends the …
Run Code Online (Sandbox Code Playgroud)

c sockets ipv4 ipv6 berkeley-sockets

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

pread 和 pwrite 未定义?

我正在尝试使用 pread 和 pwrite 以便我可以查找文件的开头并在一个原子操作中开始读取或写入。然而,这两个函数都会为我做这件事,但我遇到的问题是,warning: implicit declaration of function ‘pread’即使在我添加#define _XOPEN_SOURCE 500#include<unistd.h>像手册页所说的那样,编译器也会给我。我错过了什么吗?带有函数调用的两个语句如下。谢谢!

 #include<unistd.h>



 #define _XOPEN_SOURCE 500
    int main (int argc, char *argv[])
    {



while ( (read_in += pread(source_fd, in_buf, in_buf_size,read_in) )  )
    {

if (write_out += pwrite(dest_fd, in_buf, read_in, write_out) == -1)
        {
Run Code Online (Sandbox Code Playgroud)

c linux glibc atomic unistd.h

5
推荐指数
1
解决办法
3116
查看次数

Unix SALT 如何帮助保护密码?

前几天我在课堂上,我们正在谈论 Unix SALT 以及它如何使密码更难猜测。我的问题是 SALT 以明文形式存储在散列密码旁边,那么如何使其更安全?我的意思是如果 SALT 就在那里,那么你附加它然后散列你的猜测。此外,关于在彩虹表中预先计算猜测的问题对我来说也没有意义。您只需查看 SALT 并首先使用给定的 SALT 预先计算它。我能想到的唯一论点是恶意用户无法访问 /etc/password 文件,但黑客如何知道密码的哈希值。如果有人能指出我正确的方向,我将不胜感激。谢谢!

unix salt saltedhash

3
推荐指数
1
解决办法
2423
查看次数

使用fts遍历文件系统(3)

我有一个问题fts(3).每当我尝试访问该fts_children()函数的任何成员时,我都会遇到分段错误.当我阅读http://www.kernel.org/doc/man-pages/online/pages/man3/fts.3.html上的手册页时,它声称在读取函数运行后填充自己并返回链接的链接列表通过link结构领域.我的怀疑是child_function没有返回任何内容,但我觉得这不符合手册页.我应该将这些文件添加到子缓冲区,因为我认为这是自动完成的吗?我的代码在下面,谢谢!

#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fts.h>
#include<string.h>

int compare (const FTSENT**, const FTSENT**);

int main(int argc, char* const argv[])
{

        FTS* file_system = NULL;
        FTSENT* child = NULL;
        FTSENT* parent = NULL;
        FTSENT* temp = NULL;

        file_system = fts_open(argv + 1,FTS_COMFOLLOW | FTS_NOCHDIR,&compare);

        while( (parent = fts_read(file_system)) != NULL)
        {

             child = fts_children(file_system,0);
             printf("%s\n", child->fts_path);


        }
//      while (child ->fts_link != NULL)
      //         child = child->fts_link;
        fts_close(file_system);
        return 0;
}

int compare(const …
Run Code Online (Sandbox Code Playgroud)

c unix linux filesystems traversal

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

如何验证我的Perl CGI脚本的输入,以便我可以安全地将其传递给shell?

我是Perl和复杂正则表达式的新手.我的意思是我之前使用过正则表达式的*,但没有比这更复杂.在下面的脚本中,我知道有一个非常大的安全漏洞,可以在其中注入和运行perl代码,以便即使是shell也可以执行任何命令.在试图阻止这种注射时,我逐渐意识到正则表达式比我想象的要困难得多.我正在使用的书说要使用它的组合

die "The specified user contains illegal characters!"
      unless($user =~/^\w+$/);
Run Code Online (Sandbox Code Playgroud)

我相当肯定这意味着来自用户的输入必须以多个单词开头,但我不确定这是如何阻止注入命令的,因为它从不检查分号.我认为除非条款应该更像

unless($user=~/^\w+;\w$/);
Run Code Online (Sandbox Code Playgroud)

但是,似乎都不起作用.对此的任何帮助都会很棒,因为我真的很想理解这一点.谢谢!

#!/usr/bin/perl

use CGI;
use CGI::Carp qw(fatalsToBrowser);
$q = new CGI;

print $q->header,
    $q->start_html('Finger User'),
    $q->h1('Finger User'),
print "<pre>";

$user = $q->param("user");

#die "the specified user contains illegal characters!"
#   unless ($user =~ /ls/);
if (!($user =~ /^\w*;\w*$/)){
    print `/usr/bin/finger -s $user`;
}

print "</pre>";
print $q->end_html;
Run Code Online (Sandbox Code Playgroud)

regex security perl cgi

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

在C中初始化结构 - 避免分段错误

我是C的新手,对初始化结构有疑问.我正在使用一个我没有创建的结构,所以我不知道它里面是什么.因此,我没有初始化它,但编译器抱怨.所以我把它设置为NULL但是我遇到了分段错误.然后我查找了如何将所有内容设置为0并且它说将其设置为等于{0}.这也给了我一个分段错误.因为我知道我调用的函数是正确的,并且我传递的数组的大小正确,我几乎可以肯定它与我初始化结构的方式有关.初始化是

struct aes_ctx *aes_struct = {0}
Run Code Online (Sandbox Code Playgroud)

该函数的标题是

void aes_setkey(aes_ctx *aes, const void *key, u_int len);
Run Code Online (Sandbox Code Playgroud)

我称之为的方式是

aes_setkey(aes_struct, aes, CCA_STRENGTH);
Run Code Online (Sandbox Code Playgroud)

其中aes是大小为16的缓冲区,CCA_STRENGTH是16的常量int.

总结一下这个问题,我认为我初始化结构的方式导致它在以后无法使用.任何可以给我的帮助将非常感激!谢谢!

c struct pointers initialization

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